var fs = require('fs');

var _map =null;
var time_count=0;
var codes='';
exports.init=function(arg,dir){
    codes=dir;
    readdir();
    _map = new Map();
    time_count=arg;
    setInterval(this.remove_map,1000*1);
};
exports.return_codes=function(){
    return codes;
};

function readdir(){
    fs.readdir(codes, function(err, files) {
        if (err) {
            throw err;
        }
        // files是一个数组
        // 每个元素是此目录下的文件或文件夹的名称
        // console.log(files);
        for(var i=0;i<files.length;i++){
            fs.unlink(codes+'/'+files[i],function(err){});
        }
    });
};

exports.remove_map=function(){
    var t=new Date().getTime();
    _map.forEach(function (item, key, mapObj) {
        if(t-new Date(item.time).getTime()>=time_count){
            console.log('remove >>>>>>> code--'+item.code);
            _delete_map(key);
        }
    });
};

function _delete_map(key){
    var code = _get_map(key);
    if(code){
        fs.unlink(codes+'/'+code.code+'.png',function(err){
            if(!err){
                _map.delete(key);
            }
        });
    }
};

exports.delete_map=function(key){
    _delete_map(key);
};

exports.add_map=function(key,code,time){
    if(_map.has(key)){
        this.delete_map(key);
    }
    _map.set(key,{code:code,time:time});
};

function _get_map(key){
    if(_map.has(key)){
        return _map.get(key);
    }
    return null;
};

exports.get_map=function(key){
    return _get_map(key);
};
